.. role:: raw-html-m2r(raw) :format: html NullPointerException ==================== Introduction ------------ ``NullPointerException`` is a Scala runtime reported error which can happen when a variable is accessed before it has been initialized. Example ------- The following code: .. code-block:: scala class TopLevel extends Component { a := 42 val a = UInt(8 bits) } will throw: .. code-block:: text Exception in thread "main" java.lang.NullPointerException *** Source file location of the a := 42 assignment via the stack trace *** A fix could be: .. code-block:: scala class TopLevel extends Component { val a = UInt(8 bits) a := 42 } Issue explanation ^^^^^^^^^^^^^^^^^ SpinalHDL is not a language, it is a Scala library, which means that it obeys the same rules as the Scala general purpose programming language. When running the above SpinalHDL hardware description to generate the corresponding VHDL/Verilog RTL, the SpinalHDL hardware description will be executed as a Scala program, and ``a`` will be a null reference until the program executes ``val a = UInt(8 bits)``, so trying to assign to it before then will result in a ``NullPointerException``.